
package model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;

public class Playlist implements Serializable {
    
    private String nome;
    private ArrayList <Musica> musicas;
    private Usuario autor;
    
    /**
     * Construtor definitivo para um playlist no sistema
     * @param nome nome da playlist
     * @param autor usuario que criou a playlist
     */
    public Playlist(String nome, Usuario autor) {
        this.nome = nome;
        musicas = new ArrayList<Musica>();
        this.autor = autor;
    }
    /**
     * 
     * @return nome da playlist
     */
    public String getNome() {
        return nome;
    }
    
    /**
     * 
     * @return usuario que criou a playlist
     */
    public Usuario getAutor() {
        return autor;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    /**
     * 
     * @return músicas vinculadas a playlist
     */
    public ArrayList<Musica> getMusicas() {
        return musicas;
    }
    /**
     * 
     * @param musica nova música que será adicionada a playlist
     */
    public void addMusica(Musica musica){
        this.musicas.add(musica);        
    }
    
    /**
     * 
     * @param musica música que será excluída da playlist
     */
    public void removeMusica(Musica musica){
        this.musicas.remove(musica);        
    }
    
    @Override
    public String toString() {
        String retorno = "- Nome: " + nome + "\n- Musicas: \n";
        
        Iterator<Musica> it = musicas.iterator();
        while(it.hasNext())
        {
           Musica obj = it.next();
           retorno += "-- " + obj.toString();
        }
        
        
        return retorno;
    }    
    
    @Override
    public boolean equals(Object obj){
        
        Playlist outra = (Playlist) obj;
        return (this.nome.equals(outra.nome) && this.autor.equals(outra.autor));
    }   
}